// pages/tea/tea.js
Page({
  /**
   * 页面的初始数据
   */
  data: {
    messages: [],
    showWriteModal: false,
    messageContent: '',
    selectedTag: '开心',
    tags: ['美滋滋', '裂开', '求锦鲤', '等晴天', '疲惫', '发呆', '冲', 'emo','搬砖','沉迷学习'],
    loading: false,
    error: null,
    showToast: false,
    toastTitle: '',
    toastDuration: 2000,
    editingMessageId: null,
    safeAreaBottom: 0,
    isMyMessages: false,
    buttonTop: 0,
    buttonLeft: 0,
    windowHeight: 0,
    windowWidth: 0,
    isDragging: false,
    isLoggedIn: false,
    userInfo: null,
    showFullGif: false,  // 新增：控制全屏GIF显示
  },

  // 格式化日期
  formatDate(dateString) {
    if (!dateString) return '';
    const date = new Date(dateString);
    return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`;
  },


  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 获取安全区域信息
    try {
      const windowInfo = wx.getWindowInfo();
      const systemInfo = wx.getSystemInfoSync();
      this.setData({
        safeAreaBottom: windowInfo.safeArea ? windowInfo.safeArea.bottom - windowInfo.safeArea.height : 0
      });
    } catch (e) {
      console.error('获取系统信息失败：', e);
    }
    
    this.fetchMessages();

    // 获取窗口信息
    const systemInfo = wx.getSystemInfoSync();
    this.setData({
      buttonTop: systemInfo.windowHeight - 180,
      buttonLeft: systemInfo.windowWidth - 160,
      windowHeight: systemInfo.windowHeight,
      windowWidth: systemInfo.windowWidth
    });

    this.checkLoginStatus();

    // 获取用户信息并打印调试信息
    const userInfo = wx.getStorageSync('userInfo');
    console.log('当前用户信息：', userInfo);
    
    this.setData({
      userInfo: userInfo
    });
    
    // 在获取消息列表后打印调试信息
    this.fetchMessages().then(() => {
      console.log('消息列表：', this.data.messages);
    });
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    this.checkLoginStatus();
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    // 重新获取留言列表
    this.fetchMessages();
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },

  updateTime() {
    const now = new Date();
    const hours = now.getHours().toString().padStart(2, '0');
    const minutes = now.getMinutes().toString().padStart(2, '0');
    this.setData({
      currentTime: `${hours}:${minutes}`
    });
  },


  // 显示自定义提示
  showCustomToast(title, duration = 2000) {
    this.setData({
      showToast: true,
      toastTitle: title,
      toastDuration: duration
    });
  },

  // 提示隐藏回调
  onToastHide() {
    this.setData({
      showToast: false,
      toastTitle: ''
    });
  },

  // 处理401错误
  handleUnauthorized() {
    getApp().handleUnauthorized();
  },

  // 切换留言视图
  toggleMessageView() {
    this.setData({
      isMyMessages: !this.data.isMyMessages
    }, () => {
      this.fetchMessages();
    });
  },

  // 获取留言列表
  fetchMessages() {
    this.setData({ loading: true, error: null });
    
    const token = wx.getStorageSync('token');
    if (!token) {
      this.setData({ 
        messages: [],
        error: '请先登录'
      });
      return Promise.reject('未登录');
    }

    const url = this.data.isMyMessages 
      ? 'https://www.haoyuming.online/api/user/message/page'
      : 'https://www.haoyuming.online/api/user/message/list';

    return new Promise((resolve, reject) => {
      wx.request({
        url,
        method: 'GET',
        header: {
          'Authorization': `Bearer ${token}`
        },
        success: (res) => {
          console.log('获取留言响应:', res.data);
          if (res.statusCode === 401) {
            this.handleUnauthorized();
            reject('未授权');
            return;
          }
          if (res.data.code === 200) {
            // 处理返回的数据
            let messageList = [];
            if (this.data.isMyMessages) {
              // page接口返回的是带有records的分页数据
              messageList = res.data.data?.records || [];
            } else {
              // list接口直接返回数组
              messageList = res.data.data || [];
            }

            // 处理每条留言，确保包含必要的字段
            const messages = messageList.map(item => {
              // 打印每条消息的用户ID信息
              console.log('消息ID对比:', {
                messageId: item.id,
                messageUserId: Number(item.userId),  // 转换为数字
                currentUserId: Number(this.data.userInfo?.id),  // 转换为数字
                isMatch: Number(item.userId) === Number(this.data.userInfo?.id)
              });

              return {
                id: item.id,
                content: item.content,
                mood: item.mood || '开心',
                createTime: this.formatDate(item.createTime),
                userId: Number(item.userId),  // 存储为数字类型
                nickname: item.userName || '匿名用户',
                userAvatar: item.userAvatar || 'https://tryokey.oss-cn-beijing.aliyuncs.com/blog/20160203022635285.png'
              };
            });
            
            // 打印最终的数据
            console.log('最终处理的数据:', {
              messages: messages,
              currentUserInfo: this.data.userInfo,
              currentUserId: this.data.userInfo?.id
            });
            
            this.setData({
              messages,
              loading: false,
              error: null
            });
            
            // 添加调试日志
            console.log('处理后的留言列表详细信息:', messages.map(msg => ({
              ...msg,
              userIdType: typeof msg.userId
            })));
            
            // 打印调试信息
            console.log('处理后的留言列表:', messages);
            console.log('当前用户ID:', this.data.userInfo?.id);
            
            resolve(messages);
          } else {
            this.setData({
              error: res.data.msg || '获取留言失败',
              loading: false
            });
            reject('获取失败');
          }
        },
        fail: (err) => {
          console.error('获取留言失败：', err);
          this.setData({
            error: '网络错误，请重试',
            loading: false
          });
          reject(err);
        }
      });
    });
  },

  // 显示写留言弹窗
  showWriteModal() {
    this.setData({ showWriteModal: true });
  },

  // 隐藏写留言弹窗
  hideWriteModal() {
    this.setData({ 
      showWriteModal: false,
      messageContent: '',
      selectedTag: '开心',
      editingMessageId: null
    });
  },

  // 监听留言内容输入
  onMessageInput(e) {
    this.setData({ messageContent: e.detail.value });
  },

  // 选择标签
  selectTag(e) {
    const { tag } = e.currentTarget.dataset;
    this.setData({ selectedTag: tag });
  },

  // 提交留言
  submitMessage() {
    if (!this.data.messageContent.trim()) {
      return;
    }

    const token = wx.getStorageSync('token');
    if (!token) {
      wx.showToast({
        title: '请先登录',
        icon: 'none'
      });
      return;
    }

    wx.showLoading({ title: '发布中...' });
    
    // 判断是新增还是修改
    const isEdit = !!this.data.editingMessageId;
    const url = isEdit 
      ? `https://www.haoyuming.online/api/user/message/${this.data.editingMessageId}`
      : 'https://www.haoyuming.online/api/user/message/add';
    const method = isEdit ? 'PUT' : 'POST';

    wx.request({
      url,
      method,
      header: {
        'Content-Type': 'application/json',
        'Authorization': `Bearer ${token}`
      },
      data: {
        content: this.data.messageContent,
        mood: this.data.selectedTag
      },
      success: (res) => {
        if (res.statusCode === 401) {
          this.handleUnauthorized();
          return;
        }
        console.log('发布留言响应:', res.data);
        if (res.statusCode === 200 && res.data && res.data.code === 200) {
          // 显示审核提示
          wx.showModal({
            title: '发布成功',
            content: '留言已提交审核，审核通过后将会显示',
            showCancel: false,
            confirmText: '我知道了',
            success: () => {
              this.hideWriteModal();
              // 重置表单
              this.setData({
                messageContent: '',
                selectedTag: '开心'
              });
            }
          });
        } else {
          const errorMsg = res.data?.msg || '操作失败，请重试';
          console.error('操作失败，响应数据:', res.data);
          wx.showToast({
            title: errorMsg,
            icon: 'none',
            duration: 2000
          });
        }
      },
      fail: (err) => {
        console.error('请求失败:', err);
        wx.showToast({
          title: '网络请求失败，请检查网络连接',
          icon: 'none',
          duration: 2000
        });
      },
      complete: () => {
        wx.hideLoading();
      }
    });
  },

  // 点赞
  async handleLike(e) {
    const { id } = e.currentTarget.dataset;
    const token = wx.getStorageSync('token');
    if (!token) {
      wx.showToast({
        title: '请先登录',
        icon: 'none'
      });
      return;
    }

    try {
      // TODO: 替换为实际的API调用
      const messages = this.data.messages.map(msg => {
        if (msg.id === id) {
          return {
            ...msg,
            isLiked: !msg.isLiked,
            likes: msg.isLiked ? msg.likes - 1 : msg.likes + 1
          };
        }
        return msg;
      });
      
      this.setData({ messages });
    } catch (err) {
      wx.showToast({
        title: '操作失败，请重试',
        icon: 'none'
      });
    }
  },

  // 修改显示操作菜单的方法
  showActionSheet(e) {
    const { id, content, mood, userId } = e.currentTarget.dataset;
    // 添加详细的调试日志
    console.log('长按事件详细信息:', {
      messageUserId: userId,
      messageUserIdType: typeof userId,
      currentUserId: this.data.userInfo?.id,
      currentUserIdType: typeof this.data.userInfo?.id,
      messageData: e.currentTarget.dataset,
      userInfo: this.data.userInfo
    });
    
    // 将两个 ID 转换为字符串进行比较
    const messageUserId = String(userId);
    const currentUserId = String(this.data.userInfo?.id);
    
    // 检查是否是自己的留言
    if (this.data.userInfo && messageUserId === currentUserId) {
      wx.showActionSheet({
        itemList: ['修改', '删除'],
        success: (res) => {
          if (res.tapIndex === 0) {
            // 修改
            this.setData({
              showWriteModal: true,
              messageContent: content,
              selectedTag: mood,
              editingMessageId: id
            });
          } else if (res.tapIndex === 1) {
            // 删除
            this.deleteMessage(id);
          }
        }
      });
    } else {
      console.log('不是自己的留言，无法操作', {
        messageUserId,
        currentUserId,
        isMatch: messageUserId === currentUserId
      });
    }
  },

  // 删除留言
  deleteMessage(id) {
    wx.showModal({
      title: '确认删除',
      content: '确定要删除这封信吗？',
      success: (res) => {
        if (res.confirm) {
          const token = wx.getStorageSync('token');
          if (!token) {
            wx.showToast({
              title: '请先登录',
              icon: 'none'
            });
            return;
          }

          wx.showLoading({ title: '删除中...' });
          wx.request({
            url: `https://www.haoyuming.online/api/user/message/${id}`,
            method: 'DELETE',
            header: {
              'Authorization': `Bearer ${token}`
            },
            success: (res) => {
              if (res.statusCode === 401) {
                this.handleUnauthorized();
                return;
              }
              if (res.statusCode === 200 && res.data.code === 200) {
                wx.showToast({
                  title: '删除成功',
                  icon: 'success'
                });
                this.fetchMessages();
              } else {
                wx.showToast({
                  title: res.data?.msg || '删除失败',
                  icon: 'none'
                });
              }
            },
            fail: () => {
              wx.showToast({
                title: '删除失败，请重试',
                icon: 'none'
              });
            },
            complete: () => {
              wx.hideLoading();
            }
          });
        }
      }
    });
  },

  // 跳转到详情页
  goToDetail(e) {
    const { id } = e.currentTarget.dataset;
    wx.navigateTo({
      url: `/pages/message-detail/message-detail?id=${id}`
    });
  },

  // 添加拖动相关方法
  onGifStart(e) {
    this.setData({
      isDragging: true
    });
  },

  onGifMove(e) {
    if (!this.data.isDragging) return;
    
    const touch = e.touches[0];
    let left = touch.clientX - 60; // 60 是图片宽度的一半
    let top = touch.clientY - 60;  // 60 是图片高度的一半

    // 限制不超出屏幕
    left = Math.max(0, Math.min(left, this.data.windowWidth - 120));
    top = Math.max(0, Math.min(top, this.data.windowHeight - 120));

    this.setData({
      buttonLeft: left,
      buttonTop: top
    });
  },

  onGifEnd() {
    this.setData({
      isDragging: false
    });
  },

  // 检查登录状态
  checkLoginStatus() {
    const token = wx.getStorageSync('token');
    const userInfo = wx.getStorageSync('userInfo');
    
    if (userInfo) {
      userInfo.id = Number(userInfo.id); // 确保 id 为数字类型
    }
    
    this.setData({
      isLoggedIn: !!token && !!userInfo,
      userInfo: userInfo
    });

    if (this.data.isLoggedIn) {
      this.fetchMessages();
    }
  },

  // 跳转到登录页面
  goToLogin() {
    wx.switchTab({
      url: '/pages/profile/profile'
    });
  },

  // 显示全屏GIF
  showFullScreenGif() {
    this.setData({ showFullGif: true });
    setTimeout(() => {
      this.setData({ showFullGif: false });
    }, 3000);
  },

  // 隐藏全屏GIF
  hideFullScreenGif() {
    this.setData({ showFullGif: false });
  },
})